package com.ruoyi.order.mapper;

import com.ruoyi.order.domain.Order;
import com.ruoyi.order.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 【请填写功能名称】Mapper接口
 *
 * @author 1029432816@qq.com
 * @date 2020-02-25
 */
public interface OrderMapper {
    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    public Order selectOrderById(Long id);

    /**
     * 查询【请填写功能名称】列表
     *
     * @param order 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<Order> selectOrderList(Order order);

    /**
     * 新增【请填写功能名称】
     *
     * @param order 【请填写功能名称】
     * @return 结果
     */
    public int insertOrder(Order order);

    /**
     * 修改【请填写功能名称】
     *
     * @param order 【请填写功能名称】
     * @return 结果
     */
    int updateOrder(Order order);

    /**
     * 删除【请填写功能名称】
     *
     * @param id 【请填写功能名称】ID
     * @return 结果
     */
    public int deleteOrderById(Long id);

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteOrderByIds(@Param("ids") List<Long> ids);

    /**
     * 查询指定时间之后的订单数
     *
     * @param startDate
     * @return
     */
    int getCountByStartDate(Date startDate);

    OrderVO getOrderVOById(Long id);

    List<OrderVO> list(OrderListDTO orderListDTO);

    /**
     * 根据条件查询消毒订单数据
     *
     * @param disinfectionReportDTO
     * @return
     */
    List<DisinfectionReportVO> getDisinfectionStatisticsReport(DisinfectionReportDTO disinfectionReportDTO);

    /**
     * 获取最新的订单数据
     *
     * @return
     */
    OrderVO getLatestOrder();

    /**
     *
     * @param businessVolumeReportDTO
     * @return
     */
    List<BusinessVolumeReportVO> getBusinessVolumeReport(BusinessVolumeReportDTO businessVolumeReportDTO);

    /**
     *
     * @param businessVolumeReportDTO
     * @return
     */
    List<DoseReportVO> getDoseReport(BusinessVolumeReportDTO businessVolumeReportDTO);

    List<TrafficChargeReportVO> getTrafficChargeReport(BusinessVolumeReportDTO businessVolumeReportDTO);
}
